package org.xlp.scanner.util;

import org.xlp.scanner.constants.ScannerPkgConsts;

import java.net.URL;
import java.net.URLConnection;

/**
 * <p>创建时间：2020年12月29日 下午11:21:32</p>
 * @author xlp
 * @version 1.0 
 * @Description 提供通过url获取文件和URI的简化操作，参考org.springframework.util.ResourceUtils
*/
public class URLUtils extends org.xlp.utils.URLUtils {
	/**
	 * 判断给定的URL是不是file协议
	 * 
	 * @param url url
	 * @return 假如是file协议，返回true，否则返回false
	 */
	public static boolean isFileProtocol(URL url){
		if (url == null) {
			return false;
		}
		return ScannerPkgConsts.FILE_PROTOCOL.equals(url.getProtocol());
	}
	
	/**
	 * 判断给定的URL是不是Jar协议
	 * 
	 * @param url url
	 * @return 假如是Jar协议，返回true，否则返回false
	 */
	public static boolean isJarProtocol(URL url){
		if (url == null) {
			return false;
		}
		String protocol = url.getProtocol();
		return (ScannerPkgConsts.JAR_PROTOCOL.equals(protocol) 
				|| ScannerPkgConsts.ZIP_PROTOCOL.equals(protocol) 
				|| ScannerPkgConsts.VFSZIP_PROTOCOL.equals(protocol)
				|| ScannerPkgConsts.WSJAR_PROTOCOL.equals(protocol));
	}
	
	/**
	 * 在给定的连接上设置“useCaches”标志，对于基于JNLP的资源，设置false，其他资源该标志保留原样
	 * 
	 * @param urlConnection urlConnection
	 */
	public static void useCachesIfNecessary(URLConnection urlConnection){
		if (urlConnection != null) {
			urlConnection.setUseCaches(urlConnection.getClass().getSimpleName().startsWith("JNLP"));
		}
	}
}
